package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()

	//方法1：使用 map
	r.GET("/json", func(context *gin.Context) {
		/*data := map[string]interface{}{
			"name":    "小王子",
			"message": "Hello world",
			"age":     18,
		}*/
		//type H map[string]any
		data := gin.H{"name": "小王子", "message": "Hello world", "age": 18}
		context.JSON(http.StatusOK, data)
	})

	//方法2：结构体，灵活使用 tag 来对结构体字段做定制化操作
	type msg struct {
		name    string //字段名首字母小写，则不可导出，无法在页面上显示出来
		Message string `json:"message"` //结构体的tag，此方法可以在使用json包时，将名字改为小写的，并且可以在页面中显示出来
		Age     int
	}
	r.GET("/another_json", func(context *gin.Context) {
		data := msg{
			name:    "小王子",
			Message: "Hello golang!",
			Age:     18,
		}
		context.JSON(http.StatusOK, data) //json 的序列化
	})
	r.Run(":9090")
}
